"""
选择排序
前后分为 有序区 和 无序区
每趟，先假定 无序区的第一个数为 无序区最小
每趟把 无序区的最小的数找到，与无序区第一个数交换，从而并入 有序区
长度为n，共需要n-1趟

时间复杂度O(n的平方)
"""


def select_sort(li):
    for i in range(len(li) - 1):
        min_index = i  # 先选取 无序区第一个数为 最小值
        for j in range(i + 1, len(li)):
            if li[j] < li[min_index]:
                min_index = j
        # 一趟下来，找到了 无序区的最小值的位置
        # 与 当前无序区的第一个数 交换，变为有序区
        if min_index != i:
            li[i], li[min_index] = li[min_index], li[i]
        print(li)


if __name__ == '__main__':
    li = [2, 1, 21, 19, 20, 11, 14]
    select_sort(li)
